package top.wardyan.wmes.constant;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

/**
 * RFID工位机按键
 * @author harrydeep@wardyan.top
 * 2021年10月15日
 */
public enum KeyType {
		/** 0 **/
		NUM0		("0", 0)
		/** 1 **/
		, NUM1		("1", 1)
		/** 2 **/
		, NUM2		("2", 2)
		/** 3 **/
		, NUM3		("3", 3)
		/** 4 **/
		, NUM4		("4", 4)
		/** 5 **/ 
		, NUM5		("5", 5)
		/** 6 **/
		, NUM6		("6", 6)
		/** 7 **/
		, NUM7		("7", 7)
		/** 8 **/
		, NUM8		("8", 8)
		/** 9 **/
		, NUM9		("9", 9)
		/** 确定 **/
		, CONFIRM	("11", 11)
		/** 取消 **/
		, CANCEL	("12", 12)
		/** 上 **/
		, UP		("13", 13)
		/** 须按 **/
		, DOWN		("14", 14)
		/** 左 **/
		, LEFT		("15", 15)
		/** 右 **/
		, RIGHT		("16", 16)
		/** 菜单/功能 **/
		, MENU		("19", 19)
		/** F1 **/
		, F1		("20", 20)
		/** F2 **/
		, F2		("21", 21)
		/** 呼叫 **/
		, CALL		("35", 35)
		/** 点号 **/
		, DOT		(".", 46)

		/** 多键输入:0 **/
//		, MULTINUM0	("30", 0)
//		/** 多键输入:1 **/
//		, MULTINUM1	("31", 1)
//		/** 多键输入:2 **/
//		, MULTINUM2	("32", 2)
//		/** 多键输入:3 **/
//		, MULTINUM3	("33", 3)
//		/** 多键输入:4 **/
//		, MULTINUM4	("34", 4)
//		/** 多键输入:5 **/ 
//		, MULTINUM5	("35", 5)
//		/** 多键输入:6 **/
//		, MULTINUM6	("36", 6)
//		/** 多键输入:7 **/
//		, MULTINUM7	("37", 7)
//		/** 多键输入:8 **/
//		, MULTINUM8	("38", 8)
//		/** 多键输入:9 **/
//		, MULTINUM9	("39", 9)
//		/** 多建输入下的点号 **/
//		, MULTIDOT		("2E", 46)
//		/** MT400插卡机的点号 **/
//		, MT400DOT		(":", 46)
//		
		;
		
		
		
		
		
		
		
		
		
		
		
		String name;
		Integer id;
		
		public static final Set<Integer> DIRECTIONS = new HashSet<>() {{
			add(KeyType.UP.getId());
			add(KeyType.DOWN.getId());
			add(KeyType.LEFT.getId());
			add(KeyType.RIGHT.getId());
		}};
		
		private KeyType(String name, Integer id) {
			this.name = name;
			this.id = id;
		}
		
		private static final Map<String, KeyType> LISTS = new HashMap<>() {{
			for(var v : KeyType.values()) {
				put(v.getName(), v);
			}
		}};
		
		
		public static KeyType get(String name) {
			return LISTS.get(name);
		}
		
		

		public String getName() {
			return name;
		}

		public KeyType setName(String name) {
			this.name = name;
			return this;
		}

		public Integer getId() {
			return id;
		}

		public KeyType setId(Integer id) {
			this.id = id;
			return this;
		}

}
